<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the BFD library.

Copyright (C) 1991-2020 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Funding
Free Software", the Front-Cover texts being (a) (see below), and with
the Back-Cover Texts being (b) (see below).  A copy of the license is
included in the section entitled "GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Untitled Document: Writing Symbols</title>

<meta name="description" content="Untitled Document: Writing Symbols">
<meta name="keywords" content="Untitled Document: Writing Symbols">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="BFD-Index.html#BFD-Index" rel="index" title="BFD Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Symbols.html#Symbols" rel="up" title="Symbols">
<link href="Mini-Symbols.html#Mini-Symbols" rel="next" title="Mini Symbols">
<link href="Reading-Symbols.html#Reading-Symbols" rel="prev" title="Reading Symbols">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en">
<a name="Writing-Symbols"></a>
<div class="header">
<p>
Next: <a href="Mini-Symbols.html#Mini-Symbols" accesskey="n" rel="next">Mini Symbols</a>, Previous: <a href="Reading-Symbols.html#Reading-Symbols" accesskey="p" rel="prev">Reading Symbols</a>, Up: <a href="Symbols.html#Symbols" accesskey="u" rel="up">Symbols</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="BFD-Index.html#BFD-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Writing-symbols"></a>
<h4 class="subsection">2.7.2 Writing symbols</h4>
<p>Writing of a symbol table is automatic when a BFD open for
writing is closed. The application attaches a vector of
pointers to pointers to symbols to the BFD being written, and
fills in the symbol count. The close and cleanup code reads
through the table provided and performs all the necessary
operations. The BFD output code must always be provided with an
&ldquo;owned&rdquo; symbol: one which has come from another BFD, or one
which has been created using <code>bfd_make_empty_symbol</code>.  Here is an
example showing the creation of a symbol table with only one element:
</p>
<div class="example">
<pre class="example">       #include &quot;sysdep.h&quot;
       #include &quot;bfd.h&quot;
       int main (void)
       {
         bfd *abfd;
         asymbol *ptrs[2];
         asymbol *new;

         abfd = bfd_openw (&quot;foo&quot;,&quot;a.out-sunos-big&quot;);
         bfd_set_format (abfd, bfd_object);
         new = bfd_make_empty_symbol (abfd);
         new-&gt;name = &quot;dummy_symbol&quot;;
         new-&gt;section = bfd_make_section_old_way (abfd, &quot;.text&quot;);
         new-&gt;flags = BSF_GLOBAL;
         new-&gt;value = 0x12345;

         ptrs[0] = new;
         ptrs[1] = 0;

         bfd_set_symtab (abfd, ptrs, 1);
         bfd_close (abfd);
         return 0;
       }

       ./makesym
       nm foo
       00012345 A dummy_symbol
</pre></div>

<p>Many formats cannot represent arbitrary symbol information; for
instance, the <code>a.out</code> object format does not allow an
arbitrary number of sections. A symbol pointing to a section
which is not one  of <code>.text</code>, <code>.data</code> or <code>.bss</code> cannot
be described.
</p>



</body>
</html>
